package proyectoFC_2_3_3.koyicabuto;

import proyectoFC_2_3_3.koyicabuto.funciones.Funciones;
import proyectoFC_2_3_3.koyicabuto.funciones.FuncionesBaseDatos;
import proyectoFC_2_3_3.koyicabuto.services.MyLocationService;
import proyectoFC_2_3_3.koyicabuto.services.MyNotificationService;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;

public class BienvenidaActivity extends Activity {
	
	private FuncionesBaseDatos funcionesBaseDatos = new FuncionesBaseDatos();
	private Funciones funciones = new Funciones();
	
	private LocationManager locManager = null;
	private boolean lanzoHilo = false;
	
	private Thread thread = null;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        
        //Si el GPS no está habilitado
        if (!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
             final AlertDialog alertDialog = funciones.crearDialogoAlertaDevuelve("ERROR", 
            		 													"El GPS no está activado, es necesario tenerlo activo a la hora de crear un nuevo usuario.", 
            		 													this);
             alertDialog.setButton("Ok", new OnClickListener() {
				
				public void onClick(DialogInterface dialog, int which) {
					alertDialog.dismiss();
					cierraActivity();
				}
			});
             alertDialog.show();
        } else {
        	lanzoHilo = true;
        	thread = new Thread(){
        		public void run(){
        			if(lanzoHilo){
	        			try{
	        				lanzoHilo = false;
	        				
	        				Thread.sleep(3000);
	        				
	        				lanzarPrimeraPantalla();
	        				
	        			}catch (Exception e) {
							e.printStackTrace();
						}
        			}
        		}
        	};
        	thread.start();
        }
    }
    
    private void cierraActivity(){
    	super.finish();
    }
    
    public void lanzarPrimeraPantalla() {
    	
    	//Vemos si hay un usuario creado en la BB.DD, en el caso de que no lo halla abrir pantalla de creacion de usuario
    	boolean error = true;
		String selectUsuario = "SELECT COUNT(*) FROM USUARIO ";
		
		int contador = Integer.valueOf(-1);
		
		SQLiteDatabase gruposDataBase = funcionesBaseDatos.conectaBaseDeDatos(this);	
		try{
			if(gruposDataBase != null){
				Cursor cursor = gruposDataBase.rawQuery(selectUsuario, null);

				if(cursor.moveToFirst()){
					do{
						contador = cursor.getInt(0);
					}while(cursor.moveToNext());
				}
			}			
			funcionesBaseDatos.cierraBaseDeDatos(gruposDataBase);
			error = false;
		}catch (Exception e) {
			error = true;
			System.out.println("Excepcion al consultar usuario: " +e.getMessage());
		}
		
		if(error){
			funciones.crearDialogoAlerta("ERROR", "Al conectar con la BB.DD", this);
		}
    	
		if(contador != Integer.valueOf(0)){
	        Intent i = new Intent(this, ListaGruposActivity.class );
			startActivity(i);
		}else{
			Intent i = new Intent(this, NuevoUsuarioActivity.class );
			startActivity(i);
		}
    }
    
//    /**
//     * Metodo con el que añadimos una imagen al album del telefono.
//     * @param view
//     */
//    public void onClickBotonImagen(View view){
//		ContentResolver cr = getContentResolver();
//		
//		Bitmap bmpYo = BitmapFactory.decodeResource(getResources(),R.drawable.metallica);
//		Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(cr, bmpYo, "METALLICA1", "metallica1"));
//		bmpYo.recycle();
//	}

	
    /**
     * Metodo con el que establecemos la conexión con MyLocationService
     */
	public void doBindService() {
		//De ésta forma llamamos al WebService pero no está asociado el tiempo de vida del Activity,
		//corre en un hilo diferente en la aplicacion
		ComponentName myService = startService(new Intent(this, MyLocationService.class)) ;
		
		//De esta forma de abajo llamamos al WebService, pero lo dejamos unido al tiempo de vida de ésta Activity, si muere la Activity
		//muere el Web Service.
//		bindService(new Intent(this, MyLocationService.class), mConnection, Context.BIND_AUTO_CREATE);
	}
	
	@Override
	public void onDestroy() {
		super.onDestroy();
		
		if(thread != null){
			thread.interrupt();
		}
		
		//Paramos MyLocationService en el onDestroy de la Activity principal
		stopService(new Intent(this, MyLocationService.class));
		stopService(new Intent(this, MyNotificationService.class));
		Log.i(getClass().getSimpleName(), "FInish");
		
		//Terminamos la aplicacion
		finish();
	}
	
	@Override
	public void onResume() {
		super.onResume();
		
		if (locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
			lanzoHilo = true;
			thread = null;
			thread = new Thread(){
	    		public void run(){
	    			if(lanzoHilo){
		    			try{
		    				lanzoHilo = false;
		    				Thread.sleep(3000);
		    				
		    				lanzarPrimeraPantalla();
		    				
		    			}catch (Exception e) {
							e.printStackTrace();
						}
	    			}
	    		}
	    	};
	    	thread.start();
		}
	}
}